<?php
/**
 * Administracja - lista terminów
 * @author Miron Pawlik
 */


//sprawdzanie czy formularz zostal wyslany
if($fd['editData'])
{
	
	$errorMsg = "";
	foreach($fd['termID'] as $key => $termID)
	{
		$errorMsgLocal = "";
		if(!(is_numeric($fd['termID'][$key]) && isset($fd['termID'][$key])))
			$errorMsgLocal = "Błędy numer terminu";
		if($db->getById($fd['subjectId'][$key], 'subjects', 'subjectId', 'subjectId'))
			$errorMsgLocal = "Błędna nazwa przedmiotu";
		if($fd['day'][$key] < 0 || $fd['day'][$key] > 6)
			$errorMsgLocal = "Błędny dzień";
		if($fd['week'][$key] < 0 || $fd['week'][$key] > 2)
			$errorMsgLocal = "Błędny tydzień";
		if($fd['capacity'][$key] < 1 )
			$errorMsgLocal = "Za mało wolnych miejsc";
		if(!(is_numeric($fd['timeStart'][$key]) && is_numeric($fd['timeEnd'][$key]) && $fd['timeStart'][$key] < $fd['timeEnd'][$key]))
			$errorMsgLocal = "Błędne godziny";
		//przerabianie danych z formularza na tablice
		
		
		//edycja terminu
		if(!$errorMsgLocal)
		{
			
			$args = array('subjectID', 'day', 'timeStart', 'timeEnd', 'week', 'capacity', 'room', 'teacher');
			$arr = array();	
			foreach( $args as $v)
				$arr[$v] =  $fd[$v][$key];
			$db->editById($fd['termID'][$key], 'terms', $arr, 'termID');
			
		}
	}
	if(!$errorMsg)
		header("Location: ".$_conf['host'].'?admin,terms');
}
if($fd['type'] == 'add')
{
	//walidacja danych
	if(!(is_numeric($fd['termID']) && isset($fd['termID'])))
		$errorMsg = "Błędy numer terminu";
	if($db->getById($fd['subjectId'], 'subjects', 'subjectId', 'subjectId'))
		$errorMsg = "Błędna nazwa przedmiotu";
	if($fd['day'] < 0 || $fd['day'] > 6)
		$errorMsg = "Błędny dzień";
	if($fd['week'] < 0 || $fd['week'] > 2)
		$errorMsg = "Błędny tydzień";
	if($fd['capacity'] < 1 )
		$errorMsg = "Za mało wolnych miejsc";
	if(!(is_numeric($fd['timeStart']) && is_numeric($fd['timeEnd']) && $fd['timeStart'] < $fd['timeEnd']))
		$errorMsg = "Błędne godziny";
	//przerabianie danych z formularza na tablice
	$arr = array('subjectID', 'day', 'timeStart', 'timeEnd', 'week', 'capacity', 'room', 'teacher');
	$arr = $fd->postToArg($arr);
	
	//dodwanie terminu
	if(!$errorMsg)
	{
		//genreowanie nowego genID
		//pobieranie aktualnie najwiekszego genID dla danego przedmiotu
		$query = $db->prepare('SELECT max(genID) as max FROM terms WHERE subjectID = :sID');
		$query->bindValue('sID', $fd['subjectID']);
		$query->execute();
		$tmp = $query->fetch();
		$query->closeCursor();
		//a nastepnie zwiekszanie go o 1
		$arr['genId'] = ($tmp['max']) ? $tmp['max'] + 1 : 1;
		
		
		$db->addNew('terms', $arr);
		header("Location: ".$_conf['host'].'?admin,terms');
	}
}
//usuwanie terminu
if($fd[2] == 'del')
{
	//pobieranie informacji o aktualnie usuwanym terminie
	$tmp = $db->getById($fd[3], 'terms', '*', 'termID');
	//pobieranie najwiekszego genID dla danego przedmiotu
	$query = $db->prepare('SELECT * FROM terms WHERE subjectID = :sID ORDER BY genID DESC');
	$query->bindValue('sID', $tmp['subjectID']);
	$query->execute();
	$max = $query->fetch();
	$query->closeCursor();
	//jesli rekord z maksymalnym genID jest rozny od aktualnie usuwanego, to przypisujemy usuwany genID rekordowi z maksymalnym genID (zachowujemy ciaglasc genID)
	if($max['termID'] != $tmp['termID'])
		$db->editById($max['termID'], 'terms', array('genID' => $tmp['genID']), 'termID');
	$db->delById($fd[3], 'terms', 'termID');
	header("Location: ".$_conf['host'].'?admin,terms');
}


$smarty->assign('hours', $hours);
$smarty->assign('week', $weeks);
$smarty->assign('days', $days);
$all = $db->getData('subjects', false, 'subjectID', 'name');
$smarty->assign('subjects', $all);

$all = $db->getAll('terms', 'subjectID, day, week, timeStart');
$smarty->assign('terms', $all);

